package flc.ast.view;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.view.View;

import flc.ast.R;

public class PointerView extends View {
    private Bitmap pointerBitmap; // 指针图片
    private float rotationAngle = 0; // 旋转角度
    private float pivotX, pivotY; // 旋转中心点（尾部位置）

    public PointerView(Context context) {
        super(context);
        init();
    }

    public PointerView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public PointerView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        // 加载指针图片
        pointerBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.zhen);

        // 设置旋转中心为指针图片的尾部（假设尾部在底部中心）
        pivotX = pointerBitmap.getWidth() / 2f; // 水平中心
        pivotY = pointerBitmap.getHeight();    // 底部
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        // 创建 Matrix 并设置旋转
        Matrix matrix = new Matrix();
        matrix.postRotate(rotationAngle, pivotX, pivotY);

        // 将指针的尾部对齐到 View 的中心
        float offsetX = getWidth() / 2f - pivotX; // 水平偏移
        float offsetY = getHeight() / 2f - pivotY; // 垂直偏移
        matrix.postTranslate(offsetX, offsetY);

        // 绘制旋转后的指针图片
        canvas.drawBitmap(pointerBitmap, matrix, null);
    }

    /**
     * 设置旋转角度
     *
     * @param angle 旋转角度（单位：度）
     */
    public void setRotationAngle(float angle) {
        this.rotationAngle = angle;
        invalidate(); // 触发重绘
    }
}